收集到的方法

BrowserWindow 配置

  • webPreferences.preload
    • String (可选) -在页面运行其他脚本之前预先加载指定的脚本 无论页面是否集成Node, 此脚本都可以访问所有Node API 脚本路径为文件的绝对路径。 当 node integration 关闭时, 预加载的脚本将从全局范围重新引入node的全局引用标志 参考示例.

webContents

  • 方法

    • executeJavaScript
    • insertCSS
  • 事件

    • did-finish-load

    • dom-ready

遇到的一些坑(好好看控制台,错误信息有可能在最上面,滚动到看不见了)

  • preload脚本语法

    • 脚本本身只能用commonjs来写

    • 不支持import

    • 也不支持require ES6 module,只能用module.exports

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      // preload.js
      // const rendererAPI = require('./RendererAPI').default
      // rendererAPI()
      // export default () => {
      // SyntaxError: Unexpected token 'export'

      // import RendererAPI from './RendererAPI'
      // // RendererAPI()
      // import RendererAPI from './RendererAPI'
      // SyntaxError: Cannot use import statement outside a module

      const rendererAPI = require('./RendererAPI')
      rendererAPI()
    • 报错备忘 注意路径问题(一定要绝对路径),要用打包后的地址 preload:path.join(app.getAppPath(),'renderer-preload.js')

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      //module.exports = xxx
      Uncaught TypeError: Cannot assign to read only property 'exports' of object '#<Object>'



      // const rendererAPI = require('./RendererAPI').default
      // rendererAPI()
      // export default () => {
      // SyntaxError: Unexpected token 'export'

      // import RendererAPI from './RendererAPI'
      // SyntaxError: Cannot use import statement outside a module


      // cannot load preload.js Unexpected Identifier

      Unable to create basic Accelerated OpenGL renderer.
      Unable to create basic Accelerated OpenGL renderer.
      Core Image is now using the software OpenGL renderer. This will be slow.
  • executeJavaScript`时机

    • 判断跟dom-ready, load等的关系

参考资料

  1. BrowserWindow关于preload的说明
  2. sandbox中preload的说明
  3. webContents文档
  4. 在Electron中最快速预加载脚本
  5. Electron webview完全指南
  6. #217 Electron 深度实践总结
  7. electron 提供SDK接口注入到远端页面使用
  8. Electron 爬坑记
  9. electron程序,如何在主进程远程页面中注入js及css?
  10. Electron 预加载远程页面提升用户体验
  11. electron 研究笔记
  12. electron初探问题总结
  13. 我眼中的 Electron
× 赞赏这个人~
打赏二维码